package com.aloda.service;

import com.aloda.dto.appCategory.AppCategoryAddDTO;
import com.aloda.dto.appCategory.AppCategoryEditDTO;
import com.aloda.entity.AppCategory;
import com.aloda.query.AppCategoryPageDTO;
import com.aloda.result.PageResult;
import com.aloda.vo.appCategory.AppCategoryListVO;
import com.aloda.vo.appCategory.AppCategoryPageVO;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

/**
* @author aloda
* @description 针对表【app_category(应用分类表)】的数据库操作Service
* @createDate 2025-03-15 08:19:10
*/
public interface AppCategoryService extends IService<AppCategory> {

    /**
     * 新增应用分类
     * @param appCategoryAddDTO 新增应用分类的 DTO
     * @return 新增分类的 ID
     */
    long addAppCategory(AppCategoryAddDTO appCategoryAddDTO);

    /**
     * 分页查询应用分类
     * @param appCategoryPageDTO 分页查询的 DTO
     * @return 分页查询结果
     */
    PageResult<AppCategoryPageVO> pageQuery(AppCategoryPageDTO appCategoryPageDTO);

    /**
     * 编辑应用分类
     * @param appCategoryEditDTO 编辑应用分类的 DTO
     * @return 编辑结果
     */
    long editAppCategory(AppCategoryEditDTO appCategoryEditDTO);

    /**
     * 导出应用分类表格
     * @param response HttpServletResponse 对象
     * @param ids 要导出的分类 ID 列表
     */
    void exportAppCategoryToExcel(HttpServletResponse response, List<Long> ids);

    /**
     * 删除应用分类
     * @param ids
     * @return
     */
    boolean deleteAppCategory(List<Long> ids);

    /**
     * 获取所有正常的应用分类
     * @return
     */
    List<AppCategoryListVO> getNormalCategoryList();
}
